package com.tsj.spzx.utils;

import com.tsj.spzx.model.entity.system.SysUser;
import com.tsj.spzx.model.entity.user.UserInfo;

/**
 * 将数据存储到ThreadLocal中，这样在一次请求的controller、service、mapper中都可以使用
 */
public class AuthContextThreadLocalUtil {
    private static final ThreadLocal<SysUser> threadLocal = new ThreadLocal<>();
    private static final ThreadLocal<UserInfo> userInfoThreadLocal = new ThreadLocal<>() ;

    /**
     * @param sysUser
     */
    // 存储方法
    public static void set (SysUser sysUser) {
        threadLocal.set(sysUser);
    }
    // 获取方法
    public static SysUser get () {
        return threadLocal.get();
    }
    // 清除方法
    public static void remove () {
        // 用过之后，及时清除, 避免内存泄漏
        threadLocal.remove();
    }


    /**
     * @param userInfo
     */
    // 定义存储数据的静态方法
    public static void setUserInfo(UserInfo userInfo) {
        userInfoThreadLocal.set(userInfo);
    }

    // 定义获取数据的方法
    public static UserInfo getUserInfo() {
        return userInfoThreadLocal.get() ;
    }

    // 删除数据的方法
    public static void removeUserInfo() {
        userInfoThreadLocal.remove();
    }
}
